<?php
/**
 * Controlador com autenticação armazenada em sessão
 * @author Thiago Bezerra e Renato Lenz @ PC4 Team
 * @package PC4_Controlador
 */
class PC4_Controlador_Autenticado extends PC4_Controlador_APP {
	
	public $porteiro;
	
	protected function init($nomeSessao = 'usuarios', $urlLogin = 'admin/login/', $urlProibido = 'admin/main/proibido') {
		$this->title .= ' | Admin';

		
		// Autenticação e permissão do usuário
		$this->porteiro = new TICE_Util_AutenticadorSessaoAtivo($nomeSessao);
		$usuario = $this->porteiro->getUsuario();
		if (empty($usuario)) {
			redirect($urlLogin);
		}
		
		$acl = $this->config->item('acl');
		try {
			$verificaAcl = $this->verificaPermissao($usuario['role'], $acl);
		}
		catch (Exception $e) {
			$verificaAcl = false;
		}

		if(!$verificaAcl){
			redirect($urlProibido);
		}
		
		// carrega layout
		$this->layout->view = $usuario['role'];
		
		// carrega informações padrão
		$this->layout->setDado("title", $this->title);
		$this->layout->setDado("nome_" . $nomeSessao, $usuario['nome']);
		$this->layout->setDado("id_" . $nomeSessao, $usuario['id']);
		$this->layout->setDado("role_" . $nomeSessao, $usuario['role']);
		
		$this->layout->setDado($nomeSessao, (array)$usuario);
	}

	/**
	 * Checa permissão do usuário atual
	 * @param int $usuario_role
	 * @return boolean
	 */
	protected function verificaPermissao($usuario_role, $acl){
		$classe = $this->router->class;
		$metodo = $this->router->method;
		
//		return array($acl->isAllowed($usuario_role, $classe, $metodo), $classe, $metodo);
		return $acl->isAllowed($usuario_role, $classe, $metodo);
	}		
	
	
}